//
//  NSString+Utils.h
//  CJBusiness
//
//  Created by cuijin on 2017/12/22.
//

#import <Foundation/Foundation.h>

@interface NSString (Utils)


/**
 *  @brief 判断当前字符串中是否包含子串
 *
 *  @param string 需要检查的子串
 *
 *  @return 如果当前字符串中包含子串，返回true，否则false
 */
- (BOOL)containsString:(NSString *)string;

/**
 *  判断当前字符串中是否包含子串,不区分大小写
 *
 *  @param string  需要检查的子串
 *
 *  @return 如果当前字符串中包含子串，返回true，否则false
 */
- (BOOL)containsStringIgnoreCase:(NSString *)string;

/**
 *  正则表达式匹配
 *
 *  @param regexp  需要匹配的正则表达式
 *
 *  @return 匹配成功，返回true，否则false
 */
- (BOOL)match:(NSString *)regexp;


/**
 *  生成UUID
 *
 *  @return 生成的UUID字符串
 */
+ (NSString *)UUIDString;

/**
 *  删除首尾的空白字符串
 *
 *  @return 首尾字符串被删除的字符串
 */
- (NSString *)trimBlank;


- (BOOL)isNumber;

/**
 *  包装SDK的substringFromIndex:
 */
- (NSString *)subStringFromIndex:(NSUInteger)from;

/**
 *  包装SDK的substringToIndex:
 */
- (NSString *)subStringToIndex:(NSUInteger)to;

/**
 *  包装SDK的substringWithRange:
 */
- (NSString *)subStringWithRange:(NSRange)range;

/**
 *  判断字符串是否相等，不区分大小写
 *
 *  @param cmpString 需要比较的字符串
 *
 *  @return 相等返回true，否则返回false
 */
- (BOOL)equalIgnoreCase:(NSString *)cmpString;

/**
 *  消除字符串中的空格和换行
 *
 *  @return 消除了的空格和换行的字符串
 */
- (NSString *)trimmedString;

-(BOOL)isEmpty;

/**
 *  jsonString to NSDictionary
 */
-(NSDictionary *)dictionaryValue;

/**
 *  按照sql规则转义字符串
 *
 *  @return 按照sql规则转义字符串
 */
- (NSString*)escapeBySql;

@end



#pragma mark - String URL相关

@interface NSString(URL)

/**
 *  字符串转换成URL对象，#会在内部处理
 *
 *  @return 转换成的URL对象
 */
- (NSURL *)toURL;

/**
 *  对URL做UTF8编码
 *
 *  @return UTF8编码之后的URL字符串
 */
- (NSString *)URLEncode;
/**
 *  对NSString做URLEncode编码
 *
 *  @return NSString的URLEncode字符串
 */
- (NSString *)stringURLEncoded;

/**
 *  对NSString做URLDecoded编码
 *
 *  @return NSString的URLDecoded字符串
 */
-(NSString *)stringURLDecode;

/**
 *  对NSString做URIEncoded编码
 *
 *  @return NSString的URIEncoded字符串
 */
-(NSString*)encodeAsURIComponent;

/**
 *  对URL做UTF8解码
 *
 *  @return UTF8解码之后的URL字符串
 */
- (NSString *)URLDecode;

@end

#pragma mark - String Hash相关

@interface NSString(Hash)


/**
 * @brief 计算NSString的MD5哈希函数
 *
 * @return 返回NSString的MD5哈希值，长度32，大写
 */
- (NSString *)MD5;

/**
 * @brief 计算NSString的SHA1哈希函数
 *
 * @return 返回NSString的SHA1哈希值，长度40，大写
 */
- (NSString *)SHA1;

/**
 * @brief 计算NSString的SHA256哈希函数
 *
 * @return 返回NSString的SHA256哈希值，长度64，大写
 */
- (NSString *)SHA256;

@end

